MucSendPacketFragment.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. package com.liaobo.im.fragment;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.text.Editable;
  5. import android.text.InputFilter;
  6. import android.text.TextUtils;
  7. import android.text.TextWatcher;
  8. import android.util.Log;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11. import android.widget.TextView;
  12. import com.liaobo.im.R;
  13. import com.liaobo.im.bean.RoomMember;
  14. import com.liaobo.im.ui.base.EasyFragment;
  15. import com.liaobo.im.ui.me.redpacket.PayPasswordVerifyDialog;
  16. import com.liaobo.im.ui.message.ChatActivity;
  17. import com.liaobo.im.ui.message.MucChatActivity;
  18. import com.liaobo.im.ui.message.multi.GroupMoreFeaturesActivity;
  19. import com.liaobo.im.util.MoneyValueFilter;
  20. import com.liaobo.im.util.ToastUtil;
  21. import org.jivesoftware.smack.util.StringUtils;
  22. import java.util.Objects;
  23. import static android.app.Activity.RESULT_OK;
  24. public class MucSendPacketFragment extends EasyFragment {
  25. public static final int CODE_REQUEST_SELECT_RECEIVER = 1108;
  26. private static final String TAG = MucSendPacketFragment.class.getSimpleName();
  27. private int redPacketType;
  28. private String mReceiverId;
  29. private String mRoomId;
  30. private EditText editRedPacketCount, editMoneyAmount, edtWishText;
  31. private Button btnSendRedPacket;
  32. private TextView tvRedPacketHint,tvReceiver;
  33. @Override
  34. protected int inflateLayoutId() {
  35. return R.layout.fragment_muc_send_red_packet;
  36. }
  37. @Override
  38. protected void onActivityCreated(Bundle savedInstanceState, boolean createView) {
  39. if (createView){
  40. initView();
  41. }
  42. }
  43. public void setRoomId(String mRoomId) {
  44. this.mRoomId = mRoomId;
  45. }
  46. private void initView(){
  47. editMoneyAmount = findViewById(R.id.edit_money_amount);
  48. editMoneyAmount.setFilters(new InputFilter[] {new MoneyValueFilter()});
  49. edtWishText = findViewById(R.id.edt_wish_text);
  50. tvRedPacketHint = findViewById(R.id.tv_red_packet_hint);
  51. editRedPacketCount = findViewById(R.id.edit_red_packet_count);
  52. btnSendRedPacket = findViewById(R.id.btn_sendRedPacket);
  53. tvReceiver = findViewById(R.id.tv_receiver);
  54. btnSendRedPacket.setOnClickListener(view -> {
  55. sendRedPacket();
  56. });
  57. findViewById(R.id.rlt_select_receiver).setOnClickListener(view -> {
  58. Intent intent = new Intent(getContext(), GroupMoreFeaturesActivity.class);
  59. intent.putExtra("roomId",mRoomId);
  60. intent.putExtra("isSelectReceiver",true);
  61. startActivityForResult(intent,CODE_REQUEST_SELECT_RECEIVER);
  62. });
  63. if (redPacketType==1){
  64. tvRedPacketHint.setText(R.string.hint_money_all_same);
  65. }else {
  66. tvRedPacketHint.setText(R.string.hint_lucky_red_packet);
  67. }
  68. editMoneyAmount.addTextChangedListener(new TextWatcher() {
  69. @Override
  70. public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
  71. }
  72. @Override
  73. public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
  74. }
  75. @Override
  76. public void afterTextChanged(Editable editable) {
  77. checkMoney(editable.toString(),editRedPacketCount.getText().toString(),mReceiverId);
  78. }
  79. });
  80. editRedPacketCount.addTextChangedListener(new TextWatcher() {
  81. @Override
  82. public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
  83. }
  84. @Override
  85. public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
  86. }
  87. @Override
  88. public void afterTextChanged(Editable editable) {
  89. checkMoney(editMoneyAmount.getText().toString(),editable.toString(),mReceiverId);
  90. }
  91. });
  92. }
  93. @Override
  94. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  95. super.onActivityResult(requestCode, resultCode, data);
  96. if (requestCode == CODE_REQUEST_SELECT_RECEIVER){
  97. if (resultCode == RESULT_OK){
  98. RoomMember roomMember =(RoomMember) data.getSerializableExtra("selectReceiver");
  99. tvReceiver.setText(roomMember.getUserName());
  100. mReceiverId = roomMember.getUserId();
  101. }
  102. }
  103. }
  104. private void checkMoney(String moneyAmount, String memberCount, String receiverId) {
  105. double money = 0.00f;
  106. int count = 0;
  107. try {
  108. if (!TextUtils.isEmpty(moneyAmount)) {
  109. money = Double.parseDouble(moneyAmount);
  110. }
  111. if (!TextUtils.isEmpty(memberCount)) {
  112. count = Integer.parseInt(memberCount);
  113. }
  114. } catch (NumberFormatException e) {
  115. Log.i(TAG, Objects.requireNonNull(e.getMessage()));
  116. }
  117. if (TextUtils.isEmpty(receiverId)){
  118. if (money>0.01){
  119. setSendButtonStatus(true);
  120. }else {
  121. setSendButtonStatus(false);
  122. }
  123. }else {
  124. if (count <= 0 || money / count < 0.01) {
  125. setSendButtonStatus(false);
  126. } else {
  127. setSendButtonStatus(true);
  128. }
  129. }
  130. }
  131. private void setSendButtonStatus(boolean isNormal) {
  132. if (isNormal) {
  133. btnSendRedPacket.setSelected(false);
  134. btnSendRedPacket.setSelected(true);
  135. } else {
  136. btnSendRedPacket.setSelected(false);
  137. btnSendRedPacket.setSelected(true);
  138. }
  139. }
  140. private void sendRedPacket(){
  141. String money = editMoneyAmount.getText().toString();
  142. String count = editRedPacketCount.getText().toString();
  143. String textWish = edtWishText.getText().toString();
  144. if (eqData(money,count,textWish)){
  145. PayPasswordVerifyDialog dialog = new PayPasswordVerifyDialog(getContext());
  146. dialog.setAction(getString(R.string.chat_redpacket));
  147. dialog.setMoney(money);
  148. final String finalMoney = money;
  149. final String finalWords = textWish;
  150. final String finalCount = count;
  151. dialog.setOnInputFinishListener(password -> {
  152. final Bundle bundle = new Bundle();
  153. final Intent intent = new Intent(getContext(), MucChatActivity.class);
  154. bundle.putString("money", finalMoney);
  155. bundle.putString("count", finalCount);
  156. bundle.putString("words", finalWords);
  157. // 拼手气与普通红包位置对调,修改type
  158. // bundle.putString("type", (item + 1) + "");
  159. bundle.putString("type", redPacketType+"");
  160. bundle.putString("receiver",mReceiverId);
  161. bundle.putString("payPassword", password);
  162. int resultCode = ChatActivity. REQUEST_CODE_SEND_RED_PT;
  163. if (redPacketType==1){
  164. resultCode =ChatActivity. REQUEST_CODE_SEND_RED_PT;
  165. }else if (redPacketType ==2){
  166. resultCode =ChatActivity. REQUEST_CODE_SEND_RED_PSQ;
  167. }
  168. intent.putExtras(bundle);
  169. getActivity() .setResult(resultCode, intent);
  170. getActivity().finish();
  171. });
  172. dialog.show();
  173. }
  174. }
  175. private boolean eqData(String money, String count, String words) {
  176. if (StringUtils.isNullOrEmpty(money)) {
  177. ToastUtil.showToast(getContext(), getString(R.string.need_input_money));
  178. return false;
  179. } else if (Double.parseDouble(money) > 1800 || Double.parseDouble(money) <= 0) {
  180. ToastUtil.showToast(getContext(), getString(R.string.red_packet_range));
  181. return false;
  182. } else if (Double.parseDouble(money) > coreManager.getSelf().getBalance()) {
  183. ToastUtil.showToast(getContext(), getString(R.string.balance_not_enough));
  184. return false;
  185. } else if (StringUtils.isNullOrEmpty(count)) {
  186. ToastUtil.showToast(getContext(), getString(R.string.need_red_packet_count));
  187. return false;
  188. } else if (StringUtils.isNullOrEmpty(words)) {
  189. return false;
  190. }
  191. return true;
  192. }
  193. public void setRedPacketType(int type) {
  194. this.redPacketType = type;
  195. }
  196. }