PayPresenter.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. package com.edufound.reader.presenter;
  2. import android.app.ActionBar;
  3. import android.graphics.Color;
  4. import android.os.Handler;
  5. import android.os.Message;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.widget.ImageView;
  9. import android.widget.LinearLayout;
  10. import android.widget.TextView;
  11. import com.baidu.duer.botsdk.BotSdk;
  12. import com.edufound.reader.R;
  13. import com.edufound.reader.apiserver.OrderApiServerImpl;
  14. import com.edufound.reader.base.BaseActivity;
  15. import com.edufound.reader.base.BasePresenter;
  16. import com.edufound.reader.bean.HttpResultBean;
  17. import com.edufound.reader.bean.PayResultBean;
  18. import com.edufound.reader.botsdk.BotRegisterListener;
  19. import com.edufound.reader.contract.PayContract;
  20. import com.edufound.reader.model.PayModel;
  21. import com.edufound.reader.util.Consts;
  22. import com.edufound.reader.util.QRCodeUtil;
  23. import com.edufound.reader.util.SizeUtils;
  24. import com.google.gson.reflect.TypeToken;
  25. import com.okhttplib.HttpInfo;
  26. import com.okhttplib.callback.Callback;
  27. import com.orhanobut.logger.Logger;
  28. import java.io.IOException;
  29. import java.util.HashMap;
  30. import java.util.List;
  31. import java.util.Map;
  32. import androidx.annotation.NonNull;
  33. import androidx.constraintlayout.widget.ConstraintLayout;
  34. public class PayPresenter extends BasePresenter<PayContract.View> implements PayContract.Presenter {
  35. PayModel mModel;
  36. OrderApiServerImpl mOrderApi;
  37. List<PayResultBean> mPayResult;
  38. Map<String, String> createOrderMap;
  39. String nowOrderId = null;
  40. public PayPresenter() {
  41. this.mModel = new PayModel();
  42. mOrderApi = new OrderApiServerImpl();
  43. }
  44. @Override
  45. public void getProductInfo() {
  46. mOrderApi.getProductListInfo(mView.getActivity(), Consts.getUmengChannel(), new Callback() {
  47. @Override
  48. public void onSuccess(HttpInfo info) throws IOException {
  49. HttpResultBean<List<PayResultBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<List<PayResultBean>>>() {
  50. }.getType());
  51. mPayResult = bean.getData();
  52. mView.getProductSuccess();
  53. }
  54. @Override
  55. public void onFailure(HttpInfo info) throws IOException {
  56. }
  57. });
  58. }
  59. @Override
  60. public void activityDestory() {
  61. if (handler != null) {
  62. handler.removeMessages(1);
  63. handler.removeMessages(2);
  64. handler = null;
  65. }
  66. }
  67. @Override
  68. public void initPayItem(LinearLayout itemFrame) {
  69. Logger.e("initPayItem");
  70. for (int i = 0; i < mPayResult.size(); i++) {
  71. Message message = new Message();
  72. message.obj = itemFrame;
  73. message.what = 1;
  74. message.arg1 = i;
  75. handler.sendMessageDelayed(message, 50 * i);
  76. }
  77. }
  78. @Override
  79. public void isPaySuccess() {
  80. mModel.isPay(mView.getActivity(), nowOrderId, new Callback() {
  81. @Override
  82. public void onSuccess(HttpInfo info) throws IOException {
  83. HttpResultBean<PayResultBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<PayResultBean>>() {
  84. }.getType());
  85. Logger.e("bean.get:" + info.getRetDetail());
  86. Logger.e("status:" + bean.getData().getPayStatus());
  87. if (bean.getData().getPayStatus().equals("SUCCESS")) {
  88. handler.removeMessages(2);
  89. } else {
  90. handler.sendEmptyMessageDelayed(2, 3000);
  91. }
  92. }
  93. @Override
  94. public void onFailure(HttpInfo info) throws IOException {
  95. }
  96. });
  97. }
  98. void initItem(LinearLayout itemFrame, int position) {
  99. View view = LayoutInflater.from(mView.getActivity()).inflate(R.layout.activity_pay_item, null);
  100. view.setLayoutParams(new LinearLayout.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, 0, 1));
  101. PayItemHolder holder = new PayItemHolder(view);
  102. holder.mTitle.setText(mPayResult.get(position).getTitle());
  103. holder.mPayMoney.setText(String.valueOf(Double.parseDouble(mPayResult.get(position).getPrice()) / 100));
  104. holder.mIsCheck.setVisibility(View.INVISIBLE);
  105. double a = (Double.parseDouble(mPayResult.get(position).getOriginPrice()) / 100);
  106. double b = (Double.parseDouble(mPayResult.get(position).getPrice()) / 100);
  107. holder.mContent.setText("原价:" + a + ",现价:" + b + "元");
  108. if (mPayResult.get(position).getPayType().equals("YEAR")) {
  109. holder.mConstraintLayoutBg.setBackgroundColor(Color.parseColor("#FF904E"));
  110. } else if (mPayResult.get(position).getPayType().equals("MONTH")) {
  111. holder.mConstraintLayoutBg.setBackgroundColor(Color.parseColor("#E08CFF"));
  112. } else {
  113. holder.mConstraintLayoutBg.setBackgroundColor(Color.parseColor("#FFFFFF"));
  114. }
  115. view.setTag(holder);
  116. mView.addUiClick(view, o -> {
  117. for (int j = 0; j < itemFrame.getChildCount(); j++) {
  118. ((PayItemHolder) itemFrame.getChildAt(j).getTag()).mIsCheck.setVisibility(View.INVISIBLE);
  119. }
  120. ((PayItemHolder) view.getTag()).mIsCheck.setVisibility(View.VISIBLE);
  121. Logger.e("选择了...." + ((PayItemHolder) view.getTag()).mPayMoney.getText().toString());
  122. mModel.getPayQRCode(mView.getActivity(), mPayResult.get(position).getId(), new Callback() {
  123. @Override
  124. public void onSuccess(HttpInfo info) throws IOException {
  125. Logger.e("info.getD:" + info.getRetDetail());
  126. handler.removeMessages(2);
  127. HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
  128. }.getType());
  129. mView.setQRCode(bean.getData().toString());
  130. }
  131. @Override
  132. public void onFailure(HttpInfo info) throws IOException {
  133. }
  134. });
  135. // if (createOrderMap == null) {
  136. // createOrderMap = new HashMap<>();
  137. // }
  138. // createOrderMap.put("channel", Consts.getUmengChannel());
  139. // createOrderMap.put("productId", mPayResult.get(position).getId());
  140. // createOrderMap.put("first", "false");
  141. // mOrderApi.createdOrder(mView.getActivity(), ((BaseActivity) mView.getActivity()).getGson().toJson(createOrderMap), new Callback() {
  142. // @Override
  143. // public void onSuccess(HttpInfo info) throws IOException {
  144. // HttpResultBean<PayResultBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<PayResultBean>>() {
  145. // }.getType());
  146. //
  147. ////// BotSdk.getInstance().requireCharge(BotRegisterListener.mockAmountInfo(String.valueOf(Double.parseDouble(bean.getData().getPrice()) / 100)),
  148. ////// BotRegisterListener.mockSellerOlrderStructure(bean.getData().getProductId(), "123123123", bean.getData().getOrderId(), bean.getData().getTitle()),
  149. ////// bean.getData().getTitle());
  150. //// BotRegisterListener.requestBuyProduct();
  151. // mModel.getPayQRCode(mView.getActivity(), bean.getData().getProductId(), bean.getData().getOrderId(), new Callback() {
  152. // @Override
  153. // public void onSuccess(HttpInfo info) throws IOException {
  154. // Logger.e("info.getD:" + info.getRetDetail());
  155. // handler.removeMessages(2);
  156. // HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
  157. // }.getType());
  158. // mView.setQRCode(bean.getData().toString());
  159. // isPaySuccess();
  160. // }
  161. //
  162. // @Override
  163. // public void onFailure(HttpInfo info) throws IOException {
  164. //
  165. // }
  166. // });
  167. // nowOrderId = bean.getData().getOrderId();
  168. //
  169. // }
  170. //
  171. // @Override
  172. // public void onFailure(HttpInfo info) throws IOException {
  173. //
  174. // }
  175. // });
  176. });
  177. itemFrame.addView(view);
  178. if (position >= mPayResult.size() - 1) {
  179. Logger.e("position:" + position);
  180. Logger.e("mPayResult.size():" + mPayResult.size());
  181. itemFrame.getChildAt(0).performClick();
  182. }
  183. }
  184. Handler handler = new Handler(new Handler.Callback() {
  185. @Override
  186. public boolean handleMessage(@NonNull Message message) {
  187. switch (message.what) {
  188. case 1:
  189. initItem(((LinearLayout) message.obj), message.arg1);
  190. break;
  191. case 2:
  192. isPaySuccess();
  193. break;
  194. }
  195. return false;
  196. }
  197. });
  198. class PayItemHolder {
  199. ConstraintLayout mConstraintLayoutBg;
  200. TextView mTitle;
  201. TextView mContent;
  202. TextView mPayMoney;
  203. ImageView mIsCheck;
  204. public PayItemHolder(View itemView) {
  205. mConstraintLayoutBg = itemView.findViewById(R.id.activity_pay_item_bg);
  206. mTitle = itemView.findViewById(R.id.activity_pay_item_title);
  207. mContent = itemView.findViewById(R.id.activity_pay_item_content);
  208. mPayMoney = itemView.findViewById(R.id.activity_pay_item_money);
  209. mIsCheck = itemView.findViewById(R.id.activity_pay_item_check);
  210. }
  211. }
  212. }