package com.edufound.reader.presenter; import android.app.ActionBar; import android.graphics.Color; import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.baidu.duer.botsdk.BotSdk; import com.edufound.reader.R; import com.edufound.reader.apiserver.OrderApiServerImpl; import com.edufound.reader.base.BaseActivity; import com.edufound.reader.base.BasePresenter; import com.edufound.reader.bean.HttpResultBean; import com.edufound.reader.bean.PayResultBean; import com.edufound.reader.botsdk.BotRegisterListener; import com.edufound.reader.contract.PayContract; import com.edufound.reader.model.PayModel; import com.edufound.reader.util.Consts; import com.edufound.reader.util.QRCodeUtil; import com.edufound.reader.util.SizeUtils; import com.google.gson.reflect.TypeToken; import com.okhttplib.HttpInfo; import com.okhttplib.callback.Callback; import com.orhanobut.logger.Logger; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import androidx.annotation.NonNull; import androidx.constraintlayout.widget.ConstraintLayout; public class PayPresenter extends BasePresenter implements PayContract.Presenter { PayModel mModel; OrderApiServerImpl mOrderApi; List mPayResult; Map createOrderMap; String nowOrderId = null; public PayPresenter() { this.mModel = new PayModel(); mOrderApi = new OrderApiServerImpl(); } @Override public void getProductInfo() { mOrderApi.getProductListInfo(mView.getActivity(), Consts.getUmengChannel(), new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { HttpResultBean> bean = info.getRetDetail(new TypeToken>>() { }.getType()); mPayResult = bean.getData(); mView.getProductSuccess(); } @Override public void onFailure(HttpInfo info) throws IOException { } }); } @Override public void activityDestory() { if (handler != null) { handler.removeMessages(1); handler.removeMessages(2); handler = null; } } @Override public void initPayItem(LinearLayout itemFrame) { Logger.e("initPayItem"); for (int i = 0; i < mPayResult.size(); i++) { Message message = new Message(); message.obj = itemFrame; message.what = 1; message.arg1 = i; handler.sendMessageDelayed(message, 50 * i); } } @Override public void isPaySuccess() { mModel.isPay(mView.getActivity(), nowOrderId, new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { HttpResultBean bean = info.getRetDetail(new TypeToken>() { }.getType()); Logger.e("bean.get:" + info.getRetDetail()); Logger.e("status:" + bean.getData().getPayStatus()); if (bean.getData().getPayStatus().equals("SUCCESS")) { handler.removeMessages(2); } else { handler.sendEmptyMessageDelayed(2, 3000); } } @Override public void onFailure(HttpInfo info) throws IOException { } }); } void initItem(LinearLayout itemFrame, int position) { View view = LayoutInflater.from(mView.getActivity()).inflate(R.layout.activity_pay_item, null); view.setLayoutParams(new LinearLayout.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, 0, 1)); PayItemHolder holder = new PayItemHolder(view); holder.mTitle.setText(mPayResult.get(position).getTitle()); holder.mPayMoney.setText(String.valueOf(Double.parseDouble(mPayResult.get(position).getPrice()) / 100)); holder.mIsCheck.setVisibility(View.INVISIBLE); double a = (Double.parseDouble(mPayResult.get(position).getOriginPrice()) / 100); double b = (Double.parseDouble(mPayResult.get(position).getPrice()) / 100); holder.mContent.setText("原价:" + a + ",现价:" + b + "元"); if (mPayResult.get(position).getPayType().equals("YEAR")) { holder.mConstraintLayoutBg.setBackgroundColor(Color.parseColor("#FF904E")); } else if (mPayResult.get(position).getPayType().equals("MONTH")) { holder.mConstraintLayoutBg.setBackgroundColor(Color.parseColor("#E08CFF")); } else { holder.mConstraintLayoutBg.setBackgroundColor(Color.parseColor("#FFFFFF")); } view.setTag(holder); mView.addUiClick(view, o -> { for (int j = 0; j < itemFrame.getChildCount(); j++) { ((PayItemHolder) itemFrame.getChildAt(j).getTag()).mIsCheck.setVisibility(View.INVISIBLE); } ((PayItemHolder) view.getTag()).mIsCheck.setVisibility(View.VISIBLE); Logger.e("选择了...." + ((PayItemHolder) view.getTag()).mPayMoney.getText().toString()); mModel.getPayQRCode(mView.getActivity(), mPayResult.get(position).getId(), new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { Logger.e("info.getD:" + info.getRetDetail()); handler.removeMessages(2); HttpResultBean bean = info.getRetDetail(new TypeToken>() { }.getType()); mView.setQRCode(bean.getData().toString()); } @Override public void onFailure(HttpInfo info) throws IOException { } }); // if (createOrderMap == null) { // createOrderMap = new HashMap<>(); // } // createOrderMap.put("channel", Consts.getUmengChannel()); // createOrderMap.put("productId", mPayResult.get(position).getId()); // createOrderMap.put("first", "false"); // mOrderApi.createdOrder(mView.getActivity(), ((BaseActivity) mView.getActivity()).getGson().toJson(createOrderMap), new Callback() { // @Override // public void onSuccess(HttpInfo info) throws IOException { // HttpResultBean bean = info.getRetDetail(new TypeToken>() { // }.getType()); // ////// BotSdk.getInstance().requireCharge(BotRegisterListener.mockAmountInfo(String.valueOf(Double.parseDouble(bean.getData().getPrice()) / 100)), ////// BotRegisterListener.mockSellerOlrderStructure(bean.getData().getProductId(), "123123123", bean.getData().getOrderId(), bean.getData().getTitle()), ////// bean.getData().getTitle()); //// BotRegisterListener.requestBuyProduct(); // mModel.getPayQRCode(mView.getActivity(), bean.getData().getProductId(), bean.getData().getOrderId(), new Callback() { // @Override // public void onSuccess(HttpInfo info) throws IOException { // Logger.e("info.getD:" + info.getRetDetail()); // handler.removeMessages(2); // HttpResultBean bean = info.getRetDetail(new TypeToken>() { // }.getType()); // mView.setQRCode(bean.getData().toString()); // isPaySuccess(); // } // // @Override // public void onFailure(HttpInfo info) throws IOException { // // } // }); // nowOrderId = bean.getData().getOrderId(); // // } // // @Override // public void onFailure(HttpInfo info) throws IOException { // // } // }); }); itemFrame.addView(view); if (position >= mPayResult.size() - 1) { Logger.e("position:" + position); Logger.e("mPayResult.size():" + mPayResult.size()); itemFrame.getChildAt(0).performClick(); } } Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(@NonNull Message message) { switch (message.what) { case 1: initItem(((LinearLayout) message.obj), message.arg1); break; case 2: isPaySuccess(); break; } return false; } }); class PayItemHolder { ConstraintLayout mConstraintLayoutBg; TextView mTitle; TextView mContent; TextView mPayMoney; ImageView mIsCheck; public PayItemHolder(View itemView) { mConstraintLayoutBg = itemView.findViewById(R.id.activity_pay_item_bg); mTitle = itemView.findViewById(R.id.activity_pay_item_title); mContent = itemView.findViewById(R.id.activity_pay_item_content); mPayMoney = itemView.findViewById(R.id.activity_pay_item_money); mIsCheck = itemView.findViewById(R.id.activity_pay_item_check); } } }