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 removeDuplicateData(List sourceList, List 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 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() { @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>() { @Override public void onResponse(List 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 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 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 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 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 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 和 List public static void initLiBaoEntity(List statusList, List 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 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 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(); } }