Files
assistant-android/app/src/main/java/com/gh/common/util/LibaoUtils.java
2024-07-04 10:25:49 +08:00

866 lines
42 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.gh.common.util;
import android.app.Dialog;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.graphics.Color;
import android.text.Html;
import android.text.Spanned;
import android.text.TextUtils;
import android.util.Log;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.gh.gamecenter.BuildConfig;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.LibaoDetailAdapter;
import com.gh.gamecenter.common.utils.DialogHelper;
import com.gh.gamecenter.common.utils.ExtensionsKt;
import com.gh.gamecenter.common.utils.NotificationHelper;
import com.gh.gamecenter.common.utils.SensorsBridge;
import com.gh.gamecenter.core.utils.ToastUtils;
import com.gh.gamecenter.core.utils.UrlFilterUtils;
import com.gh.gamecenter.feature.entity.ApkEntity;
import com.gh.gamecenter.feature.entity.LibaoEntity;
import com.gh.gamecenter.feature.entity.LibaoStatusEntity;
import com.gh.gamecenter.feature.entity.MeEntity;
import com.gh.gamecenter.common.entity.NotificationUgc;
import com.gh.gamecenter.feature.entity.UserDataLibaoEntity;
import com.gh.gamecenter.common.eventbus.EBReuse;
import com.gh.gamecenter.eventbus.EBUISwitch;
import com.gh.gamecenter.feature.utils.PlatformUtils;
import com.gh.gamecenter.geetest.GeetestUtils;
import com.gh.gamecenter.login.user.UserManager;
import com.gh.gamecenter.common.retrofit.JSONObjectResponse;
import com.gh.gamecenter.common.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
import com.halo.assistant.HaloApp;
import com.lightgame.utils.Utils;
import org.greenrobot.eventbus.EventBus;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import okhttp3.ResponseBody;
import retrofit2.HttpException;
/**
* Created by khy on 2016/12/16.
* 礼包工具类, 包括联网操作和领取按钮状态
*/
public class LibaoUtils {
public static final String REFRESH_LIBAO_TIME = "refreshLiBaoTime";
// 礼包去重
public static List<LibaoEntity> removeDuplicateData(List<LibaoEntity> sourceList, List<LibaoEntity> rawList) {
if (sourceList == null || sourceList.isEmpty()
|| rawList == null || rawList.isEmpty()) {
return rawList;
}
String id;
for (int i = 0; i < rawList.size(); i++) {
id = rawList.get(i).getId();
for (LibaoEntity libaoEntity : sourceList) {
if (id.equals(libaoEntity.getId())) {
rawList.remove(i);
i--;
break;
}
}
}
return rawList;
}
private static void postLibaoLing(final Context context, final String libaoId,
final PostLibaoListener listener, final String captchaCode) {
Observable<ResponseBody> observable;
if (!TextUtils.isEmpty(captchaCode)) {
observable = RetrofitManager.getInstance().getApi().postLibaoLing(captchaCode, libaoId);
} else {
observable = RetrofitManager.getInstance().getApi().postLibaoLing(libaoId);
}
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new JSONObjectResponse() {
@Override
public void onResponse(JSONObject response) {
listener.postSucceed(response);
}
@Override
public void onFailure(HttpException e) {
if (e != null && e.code() == 410) { // 该接口已废弃
Utils.toast(context, "领取失败,请安装最新版本的光环助手");
}
listener.postFailed(e);
}
});
}
private static void postLibaoTao(final String libaoId,
final PostLibaoListener listener) {
RetrofitManager.getInstance().getApi().postLibaoTao(libaoId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new JSONObjectResponse() {
@Override
public void onResponse(JSONObject response) {
listener.postSucceed(response);
}
@Override
public void onFailure(HttpException e) {
listener.postFailed(e);
}
});
}
public static void deleteLibaoCode(final String code,
final PostLibaoListener listener) {
RetrofitManager.getInstance().getApi().deleteLibaoCode(UserManager.getInstance().getUserId(), code)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<ResponseBody>() {
@Override
public void onResponse(ResponseBody response) {
listener.postSucceed(response);
}
@Override
public void onFailure(HttpException e) {
listener.postFailed(e);
}
});
}
public static void getLibaoStatus(String ids, final PostLibaoListener listener) {
RetrofitManager.getInstance().getApi().getLibaoStatus(UrlFilterUtils.getFilterQuery("libao_ids", ids))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<List<LibaoStatusEntity>>() {
@Override
public void onResponse(List<LibaoStatusEntity> response) {
listener.postSucceed(response);
}
@Override
public void onFailure(HttpException e) {
listener.postFailed(e);
}
});
}
public static void setLiBaoBtnStatusRound(final TextView libaoBtn, LibaoEntity libaoEntity, boolean shouldUpdateStatus, Context context) {
String status = shouldUpdateStatus ? updateStatus(libaoEntity) : libaoEntity.getStatus();
libaoBtn.setTextColor(Color.WHITE);
if (status == null || TextUtils.isEmpty(status)) return;
// 领取限制为活动发放且未领取显示查看
if (ExtensionsKt.toResString(R.string.libao_activity_grant).equals(libaoEntity.getReceiveLimit()) && !status.equals("linged")) {
libaoBtn.setText(R.string.libao_check);
libaoBtn.setBackgroundResource(R.drawable.button_normal_round_style);
return;
}
switch (status) {
case "ling":
libaoBtn.setText(R.string.libao_ling);
libaoBtn.setBackgroundResource(R.drawable.button_normal_round_style);
break;
case "tao":
libaoBtn.setText(R.string.libao_tao);
libaoBtn.setBackgroundResource(R.drawable.button_normal_round_style);
break;
case "coming":
libaoBtn.setText(R.string.libao_coming);
libaoBtn.setBackgroundResource(R.drawable.button_round_gray_light);
libaoBtn.setTextColor(context.getResources().getColor(R.color.text_tertiary));
break;
case "used_up":
libaoBtn.setText(R.string.libao_used_up);
libaoBtn.setBackgroundResource(R.drawable.button_normal_round_border);
libaoBtn.setTextColor(context.getResources().getColor(R.color.text_theme));
break;
case "finish":
libaoBtn.setText(R.string.libao_finish);
libaoBtn.setBackgroundResource(R.drawable.button_border_round_gray);
libaoBtn.setTextColor(context.getResources().getColor(R.color.button_gray));
break;
case "linged":
libaoBtn.setText(R.string.libao_linged);
libaoBtn.setBackgroundResource(R.drawable.button_round_gray_light);
libaoBtn.setTextColor(context.getResources().getColor(R.color.text_tertiary));
break;
case "taoed":
libaoBtn.setText(R.string.libao_taoed);
libaoBtn.setBackgroundResource(R.drawable.button_normal_round_border);
libaoBtn.setTextColor(context.getResources().getColor(R.color.text_theme));
break;
case "copy":
libaoBtn.setText(R.string.libao_copy);
libaoBtn.setBackgroundResource(R.drawable.button_normal_round_style);
break;
case "repeatLing":
case "repeatLinged":
libaoBtn.setText(R.string.libao_repeat_ling);
libaoBtn.setBackgroundResource(R.drawable.button_normal_round_border);
libaoBtn.setTextColor(context.getResources().getColor(R.color.text_theme));
break;
case "repeatTao":
case "repeatTaoed":
libaoBtn.setText(R.string.libao_repeat_tao);
libaoBtn.setBackgroundResource(R.drawable.button_normal_round_border);
libaoBtn.setTextColor(context.getResources().getColor(R.color.text_theme));
break;
case "unshelve":
libaoBtn.setBackgroundResource(R.drawable.button_border_round_gray);
libaoBtn.setText(R.string.libao_unshelve);
libaoBtn.setTextColor(context.getResources().getColor(R.color.button_gray));
break;
case "check":
libaoBtn.setText(R.string.libao_check);
libaoBtn.setBackgroundResource(R.drawable.button_normal_round_style);
break;
default:
libaoBtn.setBackgroundResource(R.drawable.button_border_round_gray);
libaoBtn.setText("异常");
libaoBtn.setTextColor(context.getResources().getColor(R.color.button_gray));
break;
}
}
public static String updateStatus(LibaoEntity libaoEntity) {
String status = libaoEntity.getStatus();
String beforeStatus = libaoEntity.getBeforeStatus();
if (libaoEntity.getRepeat() > 0 && libaoEntity.getMe() != null
&& libaoEntity.getMe().getUserDataLibaoList() != null) {
MeEntity userData = libaoEntity.getMe();
List<UserDataLibaoEntity> userDataLibaoList = userData.getUserDataLibaoList();
int repeat = libaoEntity.getRepeat();
int curStatusCount = 0; // 当前状态的领取/淘号数量
for (UserDataLibaoEntity userDataLibaoEntity : userDataLibaoList) {
if (beforeStatus != null && beforeStatus.equals(userDataLibaoEntity.getType())) {
curStatusCount++;
}
}
// 由领取到淘号的状态转换
if (repeat <= curStatusCount || curStatusCount == 0) { // 当前领取/淘号总数是否超过总重复领取次数 / 当前状态的礼包没有领取/淘号过
if (curStatusCount == 0 && ("ling".equals(beforeStatus) || "tao".equals(beforeStatus))) {
if (isCanLing(libaoEntity)) { // 恢复原始状态
return beforeStatus;
}
}
return status;
}
if ((("linged").equals(status) || ("taoed").equals(status)) &&
("ling".equals(beforeStatus) || "tao".equals(beforeStatus))) { //检查是否到了重复领取时间
if (isCanLing(libaoEntity)) {
if ("ling".equals(beforeStatus)) {
status = "repeatLinged"; // 可以重复领取
} else {
status = "repeatTaoed"; // 可以重复领取
}
} else {
if ("ling".equals(beforeStatus)) {
status = "repeatLing"; // 预备重复领取
} else {
status = "repeatTao"; // 预备重复领取
}
}
libaoEntity.setStatus(status);
return status;
}
}
return status;
}
public static boolean isCanLing(LibaoEntity libaoEntity) {
List<UserDataLibaoEntity> userDataLibaoList = libaoEntity.getMe().getUserDataLibaoList();
UserDataLibaoEntity userDataLibaoEntity = userDataLibaoList.get(userDataLibaoList.size() - 1);
SimpleDateFormat formatDay = new SimpleDateFormat("dd", Locale.CHINA);
long lingTime = userDataLibaoEntity.getTime() * 1000;
long curTime = Utils.getTime(HaloApp.getInstance()) * 1000;
int lingDay = Integer.parseInt(formatDay.format(lingTime));
int curDay = Integer.parseInt(formatDay.format(curTime));
if (curDay != lingDay || curTime - lingTime > 24 * 60 * 60 * 1000) {
return true;
} else {
return false;
}
}
public static void initLibaoBtn(final Context context, final TextView libaoBtn, final LibaoEntity libaoEntity,
final boolean isInstallRequired, final LibaoDetailAdapter adapter, boolean shouldUpdateStatus,
final String entrance, final String sourceEntrance, final OnLibaoStatusChangeListener listener) {
setLiBaoBtnStatusRound(libaoBtn, libaoEntity, shouldUpdateStatus, context);
String status = libaoEntity.getStatus();
if (adapter != null) {
if (libaoBtn.getText().toString().equals("再领")) {
libaoBtn.setText("再领一个");
}
if (libaoBtn.getText().toString().equals("再淘")) {
libaoBtn.setText("再淘一个");
}
}
// 类型为复制的,不需要登录也可以直接复制
if ("copy".equals(libaoEntity.getReceiveMethod())) {
if ("finish".equals(libaoEntity.getStatus())) {
libaoBtn.setText(R.string.libao_finish);
libaoBtn.setBackgroundResource(R.drawable.button_border_round_gray);
libaoBtn.setTextColor(context.getResources().getColor(R.color.button_gray));
libaoBtn.setOnClickListener(v -> ToastUtils.toast("兑换码领取已结束"));
} else {
libaoBtn.setText(R.string.libao_copy);
libaoBtn.setTextColor(ExtensionsKt.toColor(R.color.white, context));
libaoBtn.setBackgroundResource(R.drawable.button_normal_round_style);
libaoBtn.setOnClickListener(v -> {
LogUtils.uploadReceiveGift(
"game_gift_code_successful",
libaoEntity.getId(),
libaoEntity.getName(),
"游戏详情",
libaoEntity.getGame().getId(),
libaoEntity.getGame().getName()
);
ExtensionsKt.copyTextAndToast(libaoEntity.getCode(), libaoEntity.getToast());
});
}
return;
}
libaoBtn.setOnClickListener(v -> {
String btnStatus = libaoBtn.getText().toString();
// 领取限制
CheckLoginUtils.checkLogin(context, "礼包详情-[" + btnStatus + "]", () -> {
if ("领取".equals(btnStatus) || "淘号".equals(btnStatus)) {
if (isInstallRequired && !isAppInstalled(context, libaoEntity.getPackageName()) && adapter != null) {
String platform;
if (TextUtils.isEmpty(libaoEntity.getPlatform())) {
platform = "";
} else {
platform = PlatformUtils.getInstance(context).getPlatformName(libaoEntity.getPlatform());
}
boolean isExistPlatform = false;
ArrayList<ApkEntity> apk = adapter.getGameEntity().getApk();
for (ApkEntity apkEntity : apk) {
if (TextUtils.isEmpty(libaoEntity.getPlatform())) break;
if (libaoEntity.getPlatform().equals(apkEntity.getPlatform())) {
isExistPlatform = true;
break;
}
}
String dialogContent = context.getString(R.string.ling_rules_dialog, libaoEntity.getGame().getName(), platform);
boolean finalIsExistPlatform = isExistPlatform;
DialogHelper.showCenterWarningDialog(context, "条件不符",
Html.fromHtml(dialogContent), isExistPlatform ? "关闭" : "",
isExistPlatform ? "立即安装" : "关闭",
() -> {
if (finalIsExistPlatform) {
adapter.openDownload(libaoEntity.getPlatform());
}
return null;
}, () -> null);
return;
}
}
switch (btnStatus) {
case "未开始":
Utils.toast(context, "还没到开始领取时间");
break;
case "查看":
if (ExtensionsKt.toResString(R.string.libao_activity_grant).equals(libaoEntity.getReceiveLimit())) {
String url = libaoEntity.getActivityLink().getUrl();
DialogHelper.showLibaoActivityDialog(
v.getContext(),
TextUtils.isEmpty(url),
() -> DirectUtils.directToWebView(v.getContext(), url, "查看礼包码弹窗-查看活动详情")
);
} else if (!TextUtils.isEmpty(libaoEntity.getDes())) {
DialogHelper.showCenterDialog(v.getContext(), "使用说明", Html.fromHtml(libaoEntity.getDes()), "关闭", "", () -> {
}, () -> {
});
}
break;
case "再领":
case "再领一个":
case "领取":
if ("repeatLing".equals(status)) {
ToastUtils.showToast("礼包每天0点刷新明日0点后可再领一个");
} else {
libaoLing(context, libaoBtn, libaoEntity, adapter, isInstallRequired, null, entrance, sourceEntrance, listener);
}
SensorsBridge.trackEvent("GameGiftDraw",
"gift_type", "普通礼包",
"game_name", libaoEntity.getGame().getName(),
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", sourceEntrance
);
break;
case "再淘":
case "再淘一个":
case "淘号":
libaoTao(context, libaoBtn, libaoEntity, isInstallRequired, adapter, status, entrance, sourceEntrance, listener);
SensorsBridge.trackEvent("GameGiftDraw",
"gift_type", "淘号礼包",
"game_name", libaoEntity.getGame().getName(),
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", sourceEntrance
);
break;
}
});
});
}
private static void libaoTao(Context context, TextView libaoBtn, LibaoEntity libaoEntity, boolean isInstallRequired, LibaoDetailAdapter adapter,
String status, String entrance, String sourceEntrance, final OnLibaoStatusChangeListener listener) {
if ("repeatTao".equals(status)) {
Utils.toast(context, "没到重复淘号时间, 礼包每天0点刷新");
return;
}
final Dialog loadingDialog = DialogUtils.showWaitDialog(context, "淘号中...");
postLibaoTao(libaoEntity.getId(), new PostLibaoListener() {
@Override
public void postSucceed(Object response) {
if (loadingDialog != null) loadingDialog.dismiss();
JSONObject responseBody = (JSONObject) response;
String libaoCode = null;
boolean hasSame = false;
try {
hasSame = responseBody.getBoolean("has_same");
libaoCode = responseBody.getString("code");
} catch (JSONException e) {
e.printStackTrace();
}
if (TextUtils.isEmpty(libaoCode)) {
try {
String detail = responseBody.getString("detail").toLowerCase();
switch (detail) {
case "maintaining":
Utils.toast(context, "网络状态异常,请稍后再试");
break;
case "fail to compete":
Utils.toast(context, "淘号失败,稍后重试");
break;
default:
Utils.toast(context, "淘号异常");
break;
}
} catch (JSONException e) {
e.printStackTrace();
}
return;
}
libaoEntity.setStatus("taoed");
UserDataLibaoEntity me = new UserDataLibaoEntity(libaoCode, "ling", Utils.getTime(context));
initLibaoCode(libaoEntity, me);
if (adapter != null) adapter.initLibaoCode(me);
EventBus.getDefault().post(new EBReuse("libaoChanged"));
if (listener != null) listener.onLibaoStatusChange();
uploadEvent(libaoEntity, true, entrance);
String des;
if (!hasSame) {
des = "淘号成功,请进入礼包详情查看兑换方法";
} else {
des = "您已领取过相同的礼包,可能无法成功兑换";
}
ToastUtils.showToast(des);
SensorsBridge.trackEvent("GameGiftDrawResult",
"draw_result", "成功",
"gift_type", "淘号礼包",
"game_name", libaoEntity.getGame().getName(),
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", sourceEntrance
);
}
@Override
public void postFailed(Throwable error) {
Utils.log("---" + error.toString());
if (loadingDialog != null) loadingDialog.dismiss();
if (error instanceof HttpException) {
HttpException exception = (HttpException) error;
if (exception.code() == 403) {
try {
JSONObject errorJson = new JSONObject(exception.response().errorBody().string());
String detail = errorJson.getString("detail").toLowerCase();
switch (detail) {
case "coming":
Utils.toast(context, "礼包领取时间未开始");
break;
case "finish":
Utils.toast(context, "礼包领取时间已结束");
break;
case "fetched":
Utils.toast(context, "你今天已领过这个礼包了, 不能再淘号");
if (libaoBtn != null) {
libaoBtn.setText("已淘号");
libaoBtn.setBackgroundResource(R.drawable.libao_taoed_style);
libaoBtn.setTextColor(ContextCompat.getColorStateList(context, R.color.libao_taoed_selector));
}
libaoEntity.setStatus("taoed");
break;
case "try tao":
case "used up":
DialogHelper.showDialog(context, "礼包已领光", "手速不够快,礼包已经被抢光了,十分抱歉", "知道了", "", () -> {
}, () -> {
}, false, "", "");
break;
case "maintaining":
Utils.toast(context, "网络状态异常,请稍后再试");
break;
case "fail to compete":
Utils.toast(context, "淘号失败,稍后重试");
break;
default:
Utils.toast(context, "操作失败");
break;
}
} catch (Exception ex) {
ex.printStackTrace();
Utils.toast(context, "礼包处理异常" + ex.toString());
}
return;
} else if (exception.code() == 401) {
return;
}
}
Utils.toast(context, "发生异常");
SensorsBridge.trackEvent("GameGiftDrawResult",
"draw_result", "失败",
"gift_type", "淘号礼包",
"game_name", libaoEntity.getGame().getName(),
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", sourceEntrance
);
}
});
}
private static void libaoLing(final Context context, TextView libaoBtn, final LibaoEntity libaoEntity, final LibaoDetailAdapter adapter,
final boolean isInstallRequired, String captchaCode, final String entrance, final String sourceEntrance, final OnLibaoStatusChangeListener listener) {
if (BuildConfig.DEBUG) {
if (libaoBtn != null) {
Log.e("LIBAO", "context? " + context + libaoBtn.getContext());
} else {
Log.e("LIBAO", "context? " + context);
}
}
final Dialog loadingDialog = DialogUtils.showWaitDialog(context, "领取中...");
postLibaoLing(context, libaoEntity.getId(), new PostLibaoListener() {
@Override
public void postSucceed(Object response) {
if (loadingDialog != null) loadingDialog.dismiss();
JSONObject responseBody = (JSONObject) response;
boolean hasSame = false; //是否领取过相同的礼包
String libaoCode = null;
int gameApkSize = 1;//游戏apk的size大于1为“多版本插件游戏”否则为“非插件游戏/单版本插件游戏”
try {
hasSame = responseBody.getBoolean("has_same");
libaoCode = responseBody.getString("code");
gameApkSize = responseBody.getInt("game_apk_size");
} catch (JSONException e) {
e.printStackTrace();
}
if (TextUtils.isEmpty(libaoCode)) {
Utils.toast(context, "领取异常");
SensorsBridge.trackEvent("GameGiftDrawResult",
"draw_result", "失败",
"gift_type", "普通礼包",
"game_name", libaoEntity.getGame().getName(),
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", sourceEntrance
);
return;
}
libaoEntity.setAvailable(libaoEntity.getAvailable() - 1);
libaoEntity.setStatus("linged");
UserDataLibaoEntity me = new UserDataLibaoEntity(libaoCode, "ling", Utils.getTime(context));
initLibaoCode(libaoEntity, me);
if (listener != null) listener.onLibaoStatusChange();
EventBus.getDefault().post(new EBReuse("libaoChanged"));
uploadEvent(libaoEntity, false, entrance);
if (adapter != null) {
adapter.initLibaoCode(new UserDataLibaoEntity(libaoCode, "ling", Utils.getTime(context)));
adapter.notifyDataSetChanged();
}
boolean finalHasSame = hasSame;
NotificationHelper.showNotificationHintDialog(NotificationUgc.GIFT, isShow -> {
if (!isShow) {
String des;
if (!finalHasSame) {
des = "领取成功,请进入礼包详情查看兑换方法";
} else {
des = "您已领取过相同的礼包,可能无法成功兑换";
}
ToastUtils.showToast(des);
}
return null;
});
SensorsBridge.trackEvent("GameGiftDrawResult",
"draw_result", "成功",
"gift_type", "普通礼包",
"game_name", libaoEntity.getGame().getName(),
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", sourceEntrance
);
}
@Override
public void postFailed(Throwable error) {
if (loadingDialog != null) loadingDialog.dismiss();
if (error instanceof HttpException) {
HttpException exception = (HttpException) error;
if (exception.code() == 403) {
try {
String string = exception.response().errorBody().string();
JSONObject errorJson = new JSONObject(string);
String detail = errorJson.getString("detail").toLowerCase();
switch (detail) {
case "coming":
Utils.toast(context, "礼包领取时间未开始");
break;
case "finish":
Utils.toast(context, "礼包领取时间已结束");
break;
case "fetched":
Utils.toast(context, "你已领过这个礼包了");
int countdown = 0;
if (errorJson.toString().contains("countdown")) {
JSONObject data = errorJson.getJSONObject("data");
countdown = data.getInt("countdown");
}
if (countdown > 0 && countdown < 60 * 10) {
EventBus.getDefault().post(new EBUISwitch(REFRESH_LIBAO_TIME, countdown));
}
if (libaoBtn != null) {
libaoBtn.setText(R.string.libao_linged);
libaoBtn.setBackgroundResource(R.drawable.libao_linged_style);
libaoBtn.setTextColor(ContextCompat.getColorStateList(context, R.color.libao_linged_selector));
}
libaoEntity.setStatus("linged");
break;
case "try tao":
case "used up":
DialogHelper.showDialog(context, "礼包已领光", "手速不够快,礼包已经被抢光了,十分抱歉", "知道了", "", () -> {
}, () -> {
}, false, "", "");
libaoEntity.setStatus("used_up");
if (libaoBtn != null) {
initLibaoBtn(context, libaoBtn, libaoEntity, isInstallRequired, adapter, false, entrance, sourceEntrance, listener);
}
break;
case "maintaining":
Utils.toast(context, "网络状态异常,请稍后再试");
break;
default:
Utils.toast(context, "操作失败");
break;
}
} catch (Exception ex) {
ex.printStackTrace();
Utils.toast(context, "礼包处理异常");
}
return;
} else if (exception.code() == 412) {
// 需要验证
GeetestUtils.getInstance().showDialog(context, captcha ->
libaoLing(context, libaoBtn, libaoEntity, adapter, isInstallRequired, captcha, entrance, sourceEntrance, listener));
return;
} else if (exception.code() == 401) {
return;
}
}
Utils.toast(context, "发生异常");
SensorsBridge.trackEvent("GameGiftDrawResult",
"draw_result", "失败",
"gift_type", "普通礼包",
"game_name", libaoEntity.getGame().getName(),
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", sourceEntrance
);
}
}, captchaCode);
}
public static void initLibaoCode(LibaoEntity libaoEntity, UserDataLibaoEntity userDataLibaoEntity) {
MeEntity userData = libaoEntity.getMe();
if (userData == null) {
userData = new MeEntity();
libaoEntity.setMe(userData);
}
List<UserDataLibaoEntity> userDataLibaoList = userData.getUserDataLibaoList();
if (userDataLibaoList == null) {
userDataLibaoList = new ArrayList<>();
userData.setUserDataLibaoList(userDataLibaoList);
}
userDataLibaoList.add(userDataLibaoEntity);
}
private static void uploadEvent(LibaoEntity libaoEntity, boolean isTao, String entrance) {
String location = "";
if (!libaoEntity.getClickReceiveBtnIn()) {
location = "礼包详情";
} else {
if (entrance.contains("游戏详情")) {
location = "游戏详情";
} else if (entrance.contains("礼包中心:最新")) {
location = "礼包中心-最新";
} else if (entrance.contains("礼包中心:关注")) {
location = "礼包中心-关注";
}
}
String event = isTao ? "game_gift_dig_successful" : "game_gift_get_successful";
LogUtils.uploadReceiveGift(event, libaoEntity.getId(), libaoEntity.getName(), location,
libaoEntity.getGame() == null ? "" : libaoEntity.getGame().getId(), libaoEntity.getGame() == null ? "" : libaoEntity.getGame().getName());
}
public static boolean isAppInstalled(Context context, String packageName) {
List<String> packageNameList = PackageHelper.INSTANCE.getInstalledPackageNameList(context, 0);
if (packageNameList != null) {
for (int i = 0; i < packageNameList.size(); i++) {
String pn = packageNameList.get(i);
if (pn.equals(packageName)) {
return true;
}
}
}
return false;
}
public static void lunningAppDialog(final Context context, Spanned msg, final LibaoEntity libaoEntity) {
DialogHelper.showCenterWarningDialog(context, "复制成功", msg
, "关闭", "启动游戏"
, () -> {
if (LibaoUtils.isAppInstalled(context, libaoEntity.getPackageName())) {
PackageLauncher.launchApp(context, null, libaoEntity.getPackageName());
} else {
Utils.toast(context, "请安装游戏:" + libaoEntity.getGame().getName()
+ PlatformUtils.getInstance(context).getPlatformName(libaoEntity.getPlatform()) + "");
}
return null;
}, () -> null);
}
//复制文字
public static void copyLink(String copyContent, Context context) {
ExtensionsKt.copyTextAndToast(copyContent, copyContent + " 复制成功");
}
// 合并List<LibaoStatusEntity> 和 List<LibaoEntity>
public static void initLiBaoEntity(List<LibaoStatusEntity> statusList,
List<LibaoEntity> libaoEntities) {
for (LibaoEntity libaoEntity : libaoEntities) {
for (LibaoStatusEntity libaoStatusEntity : statusList) {
if (libaoEntity.getId().equals(libaoStatusEntity.getId())) {
libaoEntity.setBeforeStatus(libaoStatusEntity.getStatus());
libaoStatusEntity.setBeforeStatus(libaoStatusEntity.getStatus());
MeEntity userData = libaoEntity.getMe();
if (userData != null && userData.getUserDataLibaoList() != null && userData.getUserDataLibaoList().size() > 0) {
List<UserDataLibaoEntity> userDataLibaoList = userData.getUserDataLibaoList();
UserDataLibaoEntity userDataLibaoEntity = userDataLibaoList.get(userDataLibaoList.size() - 1);
if ("ling".equals(userDataLibaoEntity.getType())) { // 拿最后一次领取的状态判断
libaoEntity.setStatus("linged");
} else {
libaoEntity.setStatus("taoed");
}
} else {
libaoEntity.setStatus(libaoStatusEntity.getStatus());
}
libaoEntity.setAvailable(libaoStatusEntity.getAvailable());
libaoEntity.setTotal(libaoStatusEntity.getTotal());
}
}
}
}
public static void initLiBaoEntity(LibaoStatusEntity libaoStatusEntity,
LibaoEntity libaoEntity) {
if (libaoEntity.getId().equals(libaoStatusEntity.getId())) {
libaoEntity.setBeforeStatus(libaoStatusEntity.getStatus());
libaoStatusEntity.setBeforeStatus(libaoStatusEntity.getStatus());
MeEntity userData = libaoEntity.getMe();
if (userData != null && userData.getUserDataLibaoList() != null && userData.getUserDataLibaoList().size() > 0) {
List<UserDataLibaoEntity> userDataLibaoList = userData.getUserDataLibaoList();
UserDataLibaoEntity userDataLibaoEntity = userDataLibaoList.get(userDataLibaoList.size() - 1);
if ("ling".equals(userDataLibaoEntity.getType())) { // 拿最后一次领取的状态判断
libaoEntity.setStatus("linged");
} else {
libaoEntity.setStatus("taoed");
}
} else {
libaoEntity.setStatus(libaoStatusEntity.getStatus());
}
libaoEntity.setAvailable(libaoStatusEntity.getAvailable());
libaoEntity.setTotal(libaoStatusEntity.getTotal());
}
}
public interface PostLibaoListener {
void postSucceed(Object response);
void postFailed(Throwable error);
}
public interface OnLibaoStatusChangeListener {
void onLibaoStatusChange();
}
}